You're not currently signed in. Sign in »

Numerical Methods for Partial Differential Equations (CS 555) Spring 2020

What Where
Time/place Wed/Fri 11:00am-12:15pm 1304 Siebel / Catalog
Class URL https://bit.ly/numpde-s20
Live lecture Participate » (requires password) · Backup: Twitch Stream
Class recordings Watch » · Alternate, prior to spring break: Echo 360
Piazza Discuss »
Calendar View »
Office Hours Participate » (Please use Chrome/Chromium to connect for now)

Homework

Quizzes and Feedback Form

Project

Why you should take this class

This course covers the basics of finite difference schemes, finite volume schemes, and finite element methods (majority). In addition, we'll cover some advanced topics such as discontinuous Galerkin and spectral methods.

One of the goals of this course is to build intuition for these methods. We'll be using Python and will be providing background for many of the computational and mathematical concepts in the course. As such, you do not need to be an expert in PDEs or in coding. But you should have a course in numerical analysis as your background (CS450 or equivalent), be comfortable with differential equations, and have some coding experience.

The course is divided in roughly two parts: hyperbolic and elliptic. This is of course a generalization, but it does allow us to focus on finite difference/finite volume methods for one part of the course and finite elements for another part. In addition to model problems we'll look at Stokes and other equations in order to develop a full understanding of the methods.

The course involves several homeworks (usually bi-weekly) and two projects: a midsemester project and a final project. There is also a participation grade based on quizzes.

The course homeworks and examples in class will be in Python. In particular, we'll use numpy and scipy.

Instructor

Andreas Kloeckner

Andreas Kloeckner

(Instructor)

Email: andreask@illinois.edu

Office: 4318 Siebel

Teaching Assistant

Malachi Phillips

Malachi Phillips

(Teaching Assistant)

Email: malachi2@illinois.edu

Office: 3401 Siebel

Course Outline

Note: the section headings in this tree are clickable to reveal more detail.

  • Introduction
    • Notes
    • Notes (unfilled, with empty boxes)
    • About the Class
    • Classifcation of PDEs
    • Preliminaries: Differencing
    • Interpolation Error Estimates (reference)
    • Demo: Elliptic PDE Illustrating the Maximum Principle
        </li>
        <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
          <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/intro/Elliptic PDE Radially Symmetric Singular Solution.ipynb">Demo: Elliptic PDE Radially Symmetric Singular Solution</a>
          <ul>
            <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
              <a href="repocur:demos/upload/intro/Elliptic PDE Radially Symmetric Singular Solution.html">View on the web</a>
            </li>
            <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
              <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/intro/Elliptic PDE Radially Symmetric Singular Solution.ipynb">Run interactively (on mybinder.org)</a>
            </li>
            <li data-jstree='{"icon": "fa fa-terminal"}'>
              <a href="repocur:demos/upload/intro/Elliptic PDE Radially Symmetric Singular Solution.py">Download Python script</a>
            </li>
            <li data-jstree='{"icon": "fa fa-download"}'>
              <a href="repocur:demos/upload/intro/Elliptic PDE Radially Symmetric Singular Solution.ipynb">Download Jupyter notebook</a>
            </li>
          </ul>
        </li>
        <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
          <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/intro/Finite Differences vs Noise.ipynb">Demo: Finite Differences vs Noise</a>
          <ul>
            <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
              <a href="repocur:demos/upload/intro/Finite Differences vs Noise.html">View on the web</a>
            </li>
            <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
              <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/intro/Finite Differences vs Noise.ipynb">Run interactively (on mybinder.org)</a>
            </li>
            <li data-jstree='{"icon": "fa fa-terminal"}'>
              <a href="repocur:demos/upload/intro/Finite Differences vs Noise.py">Download Python script</a>
            </li>
            <li data-jstree='{"icon": "fa fa-download"}'>
              <a href="repocur:demos/upload/intro/Finite Differences vs Noise.ipynb">Download Jupyter notebook</a>
            </li>
          </ul>
        </li>
        <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
          <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/intro/Finite Differences.ipynb">Demo: Finite Differences</a>
          <ul>
            <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
              <a href="repocur:demos/upload/intro/Finite Differences.html">View on the web</a>
            </li>
            <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
              <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/intro/Finite Differences.ipynb">Run interactively (on mybinder.org)</a>
            </li>
            <li data-jstree='{"icon": "fa fa-terminal"}'>
              <a href="repocur:demos/upload/intro/Finite Differences.py">Download Python script</a>
            </li>
            <li data-jstree='{"icon": "fa fa-download"}'>
              <a href="repocur:demos/upload/intro/Finite Differences.ipynb">Download Jupyter notebook</a>
            </li>
          </ul>
        </li>
        <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
          <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/intro/Floating point vs Finite Differences.ipynb">Demo: Floating point vs Finite Differences</a>
          <ul>
            <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
              <a href="repocur:demos/upload/intro/Floating point vs Finite Differences.html">View on the web</a>
            </li>
            <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
              <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/intro/Floating point vs Finite Differences.ipynb">Run interactively (on mybinder.org)</a>
            </li>
            <li data-jstree='{"icon": "fa fa-terminal"}'>
              <a href="repocur:demos/upload/intro/Floating point vs Finite Differences.py">Download Python script</a>
            </li>
            <li data-jstree='{"icon": "fa fa-download"}'>
              <a href="repocur:demos/upload/intro/Floating point vs Finite Differences.ipynb">Download Jupyter notebook</a>
            </li>
          </ul>
        </li>
        <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
          <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/intro/Hyperbolic PDE.ipynb">Demo: Hyperbolic PDE</a>
          <ul>
            <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
              <a href="repocur:demos/upload/intro/Hyperbolic PDE.html">View on the web</a>
            </li>
            <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
              <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/intro/Hyperbolic PDE.ipynb">Run interactively (on mybinder.org)</a>
            </li>
            <li data-jstree='{"icon": "fa fa-terminal"}'>
              <a href="repocur:demos/upload/intro/Hyperbolic PDE.py">Download Python script</a>
            </li>
            <li data-jstree='{"icon": "fa fa-download"}'>
              <a href="repocur:demos/upload/intro/Hyperbolic PDE.ipynb">Download Jupyter notebook</a>
            </li>
          </ul>
        </li>
        <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
          <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/intro/Interpolation Error.ipynb">Demo: Interpolation Error</a>
          <ul>
            <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
              <a href="repocur:demos/upload/intro/Interpolation Error.html">View on the web</a>
            </li>
            <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
              <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/intro/Interpolation Error.ipynb">Run interactively (on mybinder.org)</a>
            </li>
            <li data-jstree='{"icon": "fa fa-terminal"}'>
              <a href="repocur:demos/upload/intro/Interpolation Error.py">Download Python script</a>
            </li>
            <li data-jstree='{"icon": "fa fa-download"}'>
              <a href="repocur:demos/upload/intro/Interpolation Error.ipynb">Download Jupyter notebook</a>
            </li>
          </ul>
        </li>
        <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
          <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/intro/Parabolic PDE.ipynb">Demo: Parabolic PDE</a>
          <ul>
            <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
              <a href="repocur:demos/upload/intro/Parabolic PDE.html">View on the web</a>
            </li>
            <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
              <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/intro/Parabolic PDE.ipynb">Run interactively (on mybinder.org)</a>
            </li>
            <li data-jstree='{"icon": "fa fa-terminal"}'>
              <a href="repocur:demos/upload/intro/Parabolic PDE.py">Download Python script</a>
            </li>
            <li data-jstree='{"icon": "fa fa-download"}'>
              <a href="repocur:demos/upload/intro/Parabolic PDE.ipynb">Download Jupyter notebook</a>
            </li>
          </ul>
        </li>
        <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
          <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/intro/Taking Derivatives with Vandermonde Matrices.ipynb">Demo: Taking Derivatives with Vandermonde Matrices</a>
          <ul>
            <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
              <a href="repocur:demos/upload/intro/Taking Derivatives with Vandermonde Matrices.html">View on the web</a>
            </li>
            <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
              <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/intro/Taking Derivatives with Vandermonde Matrices.ipynb">Run interactively (on mybinder.org)</a>
            </li>
            <li data-jstree='{"icon": "fa fa-terminal"}'>
              <a href="repocur:demos/upload/intro/Taking Derivatives with Vandermonde Matrices.py">Download Python script</a>
            </li>
            <li data-jstree='{"icon": "fa fa-download"}'>
              <a href="repocur:demos/upload/intro/Taking Derivatives with Vandermonde Matrices.ipynb">Download Jupyter notebook</a>
            </li>
          </ul>
        </li>
      </ul>
      

    • Finite Difference Methods for Time-Dependent Problems
      • 1D Advection
      •   <li data-jstree='{"icon": "fa fa-file-o"}'>
            Stability and Convergence
          </li>
          <li data-jstree='{"icon": "fa fa-file-o"}'>
            Von Neumann Stability
          </li>
          <li data-jstree='{"icon": "fa fa-file-o"}'>
            Dispersion and Dissipation
          </li>
          <li data-jstree='{"icon": "fa fa-file-o"}'>
            A Glimpse of Parabolic PDEs
          </li>
          <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
            <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fd-tdep/Crank-Nicolson Scheme.ipynb">Demo: Crank-Nicolson Scheme</a>
            <ul>
              <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
                <a href="repocur:demos/upload/fd-tdep/Crank-Nicolson Scheme.html">View on the web</a>
              </li>
              <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fd-tdep/Crank-Nicolson Scheme.ipynb">Run interactively (on mybinder.org)</a>
              </li>
              <li data-jstree='{"icon": "fa fa-terminal"}'>
                <a href="repocur:demos/upload/fd-tdep/Crank-Nicolson Scheme.py">Download Python script</a>
              </li>
              <li data-jstree='{"icon": "fa fa-download"}'>
                <a href="repocur:demos/upload/fd-tdep/Crank-Nicolson Scheme.ipynb">Download Jupyter notebook</a>
              </li>
            </ul>
          </li>
          <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
            <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fd-tdep/Dispersion and Dissipation.ipynb">Demo: Dispersion and Dissipation</a>
            <ul>
              <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
                <a href="repocur:demos/upload/fd-tdep/Dispersion and Dissipation.html">View on the web</a>
              </li>
              <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fd-tdep/Dispersion and Dissipation.ipynb">Run interactively (on mybinder.org)</a>
              </li>
              <li data-jstree='{"icon": "fa fa-terminal"}'>
                <a href="repocur:demos/upload/fd-tdep/Dispersion and Dissipation.py">Download Python script</a>
              </li>
              <li data-jstree='{"icon": "fa fa-download"}'>
                <a href="repocur:demos/upload/fd-tdep/Dispersion and Dissipation.ipynb">Download Jupyter notebook</a>
              </li>
            </ul>
          </li>
          <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
            <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fd-tdep/Experimenting with Dispersion and Dissipation.ipynb">Demo: Experimenting with Dispersion and Dissipation</a>
            <ul>
              <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
                <a href="repocur:demos/upload/fd-tdep/Experimenting with Dispersion and Dissipation.html">View on the web</a>
              </li>
              <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fd-tdep/Experimenting with Dispersion and Dissipation.ipynb">Run interactively (on mybinder.org)</a>
              </li>
              <li data-jstree='{"icon": "fa fa-terminal"}'>
                <a href="repocur:demos/upload/fd-tdep/Experimenting with Dispersion and Dissipation.py">Download Python script</a>
              </li>
              <li data-jstree='{"icon": "fa fa-download"}'>
                <a href="repocur:demos/upload/fd-tdep/Experimenting with Dispersion and Dissipation.ipynb">Download Jupyter notebook</a>
              </li>
            </ul>
          </li>
          <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
            <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fd-tdep/Methods for 1D Advection.ipynb">Demo: Methods for 1D Advection</a>
            <ul>
              <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
                <a href="repocur:demos/upload/fd-tdep/Methods for 1D Advection.html">View on the web</a>
              </li>
              <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fd-tdep/Methods for 1D Advection.ipynb">Run interactively (on mybinder.org)</a>
              </li>
              <li data-jstree='{"icon": "fa fa-terminal"}'>
                <a href="repocur:demos/upload/fd-tdep/Methods for 1D Advection.py">Download Python script</a>
              </li>
              <li data-jstree='{"icon": "fa fa-download"}'>
                <a href="repocur:demos/upload/fd-tdep/Methods for 1D Advection.ipynb">Download Jupyter notebook</a>
              </li>
            </ul>
          </li>
          <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
            <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fd-tdep/Truncation Error Analysis via sympy.ipynb">Demo: Truncation Error Analysis via sympy</a>
            <ul>
              <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
                <a href="repocur:demos/upload/fd-tdep/Truncation Error Analysis via sympy.html">View on the web</a>
              </li>
              <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fd-tdep/Truncation Error Analysis via sympy.ipynb">Run interactively (on mybinder.org)</a>
              </li>
              <li data-jstree='{"icon": "fa fa-terminal"}'>
                <a href="repocur:demos/upload/fd-tdep/Truncation Error Analysis via sympy.py">Download Python script</a>
              </li>
              <li data-jstree='{"icon": "fa fa-download"}'>
                <a href="repocur:demos/upload/fd-tdep/Truncation Error Analysis via sympy.ipynb">Download Jupyter notebook</a>
              </li>
            </ul>
          </li>
          <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
            <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fd-tdep/Waves and Stability.ipynb">Demo: Waves and Stability</a>
            <ul>
              <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
                <a href="repocur:demos/upload/fd-tdep/Waves and Stability.html">View on the web</a>
              </li>
              <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fd-tdep/Waves and Stability.ipynb">Run interactively (on mybinder.org)</a>
              </li>
              <li data-jstree='{"icon": "fa fa-terminal"}'>
                <a href="repocur:demos/upload/fd-tdep/Waves and Stability.py">Download Python script</a>
              </li>
              <li data-jstree='{"icon": "fa fa-download"}'>
                <a href="repocur:demos/upload/fd-tdep/Waves and Stability.ipynb">Download Jupyter notebook</a>
              </li>
            </ul>
          </li>
        </ul>
        

      • Finite Volume Methods for Hyperbolic Conservation Laws
        • Theory of 1D Scalar Conservation Laws
        •   <li data-jstree='{"icon": "fa fa-file-o"}'>
              Numerical Methods for Conservation Laws
            </li>
            <li data-jstree='{"icon": "fa fa-file-o"}'>
              Higher-Order Finite Volume
            </li>
            <li data-jstree='{"icon": "fa fa-file-o"}'>
              Outlook: Systems and Multiple Dimensions
            </li>
            <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
              <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fv-hyperbolic/Finite Volume Burgers.ipynb">Demo: Finite Volume Burgers</a>
              <ul>
                <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
                  <a href="repocur:demos/upload/fv-hyperbolic/Finite Volume Burgers.html">View on the web</a>
                </li>
                <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                  <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fv-hyperbolic/Finite Volume Burgers.ipynb">Run interactively (on mybinder.org)</a>
                </li>
                <li data-jstree='{"icon": "fa fa-terminal"}'>
                  <a href="repocur:demos/upload/fv-hyperbolic/Finite Volume Burgers.py">Download Python script</a>
                </li>
                <li data-jstree='{"icon": "fa fa-download"}'>
                  <a href="repocur:demos/upload/fv-hyperbolic/Finite Volume Burgers.ipynb">Download Jupyter notebook</a>
                </li>
              </ul>
            </li>
          </ul>
          

        • Finite Element Methods for Elliptic Problems
          • tl;dr: Functional Analysis
          •   <li data-jstree='{"icon": "fa fa-file-o"}'>
                Back to Elliptic PDEs
              </li>
              <li data-jstree='{"icon": "fa fa-file-o"}'>
                Galerkin Approximation
              </li>
              <li data-jstree='{"icon": "fa fa-file-o"}'>
                Finite Elements: A 1D Cartoon
              </li>
              <li data-jstree='{"icon": "fa fa-file-o"}'>
                Finite Elements in 2D
              </li>
              <li data-jstree='{"icon": "fa fa-file-o"}'>
                Approximation Theory in Sobolev Spaces
              </li>
              <li data-jstree='{"icon": "fa fa-file-o"}'>
                Saddle Point Problems, Stokes, and Mixed FEM
              </li>
              <li data-jstree='{"icon": "fa fa-file-o"}'>
                Non-symmetric Bilinear Forms
              </li>
              <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fe-elliptic/2D FEM Using Firedrake.ipynb">Demo: 2D FEM Using Firedrake</a>
                <ul>
                  <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
                    <a href="repocur:demos/upload/fe-elliptic/2D FEM Using Firedrake.html">View on the web</a>
                  </li>
                  <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                    <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fe-elliptic/2D FEM Using Firedrake.ipynb">Run interactively (on mybinder.org)</a>
                  </li>
                  <li data-jstree='{"icon": "fa fa-terminal"}'>
                    <a href="repocur:demos/upload/fe-elliptic/2D FEM Using Firedrake.py">Download Python script</a>
                  </li>
                  <li data-jstree='{"icon": "fa fa-download"}'>
                    <a href="repocur:demos/upload/fe-elliptic/2D FEM Using Firedrake.ipynb">Download Jupyter notebook</a>
                  </li>
                </ul>
              </li>
              <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fe-elliptic/2D Stokes Using Firedrake.ipynb">Demo: 2D Stokes Using Firedrake</a>
                <ul>
                  <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
                    <a href="repocur:demos/upload/fe-elliptic/2D Stokes Using Firedrake.html">View on the web</a>
                  </li>
                  <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                    <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fe-elliptic/2D Stokes Using Firedrake.ipynb">Run interactively (on mybinder.org)</a>
                  </li>
                  <li data-jstree='{"icon": "fa fa-terminal"}'>
                    <a href="repocur:demos/upload/fe-elliptic/2D Stokes Using Firedrake.py">Download Python script</a>
                  </li>
                  <li data-jstree='{"icon": "fa fa-download"}'>
                    <a href="repocur:demos/upload/fe-elliptic/2D Stokes Using Firedrake.ipynb">Download Jupyter notebook</a>
                  </li>
                </ul>
              </li>
              <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fe-elliptic/Bad Discretizations for 2D Stokes.ipynb">Demo: Bad Discretizations for 2D Stokes</a>
                <ul>
                  <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
                    <a href="repocur:demos/upload/fe-elliptic/Bad Discretizations for 2D Stokes.html">View on the web</a>
                  </li>
                  <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                    <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fe-elliptic/Bad Discretizations for 2D Stokes.ipynb">Run interactively (on mybinder.org)</a>
                  </li>
                  <li data-jstree='{"icon": "fa fa-terminal"}'>
                    <a href="repocur:demos/upload/fe-elliptic/Bad Discretizations for 2D Stokes.py">Download Python script</a>
                  </li>
                  <li data-jstree='{"icon": "fa fa-download"}'>
                    <a href="repocur:demos/upload/fe-elliptic/Bad Discretizations for 2D Stokes.ipynb">Download Jupyter notebook</a>
                  </li>
                </ul>
              </li>
              <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fe-elliptic/Developing FEM in 1D.ipynb">Demo: Developing FEM in 1D</a>
                <ul>
                  <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
                    <a href="repocur:demos/upload/fe-elliptic/Developing FEM in 1D.html">View on the web</a>
                  </li>
                  <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                    <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fe-elliptic/Developing FEM in 1D.ipynb">Run interactively (on mybinder.org)</a>
                  </li>
                  <li data-jstree='{"icon": "fa fa-terminal"}'>
                    <a href="repocur:demos/upload/fe-elliptic/Developing FEM in 1D.py">Download Python script</a>
                  </li>
                  <li data-jstree='{"icon": "fa fa-download"}'>
                    <a href="repocur:demos/upload/fe-elliptic/Developing FEM in 1D.ipynb">Download Jupyter notebook</a>
                  </li>
                </ul>
              </li>
              <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fe-elliptic/Developing FEM in 2D.ipynb">Demo: Developing FEM in 2D</a>
                <ul>
                  <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
                    <a href="repocur:demos/upload/fe-elliptic/Developing FEM in 2D.html">View on the web</a>
                  </li>
                  <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                    <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fe-elliptic/Developing FEM in 2D.ipynb">Run interactively (on mybinder.org)</a>
                  </li>
                  <li data-jstree='{"icon": "fa fa-terminal"}'>
                    <a href="repocur:demos/upload/fe-elliptic/Developing FEM in 2D.py">Download Python script</a>
                  </li>
                  <li data-jstree='{"icon": "fa fa-download"}'>
                    <a href="repocur:demos/upload/fe-elliptic/Developing FEM in 2D.ipynb">Download Jupyter notebook</a>
                  </li>
                </ul>
              </li>
              <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fe-elliptic/Rates of Convergence.ipynb">Demo: Rates of Convergence</a>
                <ul>
                  <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
                    <a href="repocur:demos/upload/fe-elliptic/Rates of Convergence.html">View on the web</a>
                  </li>
                  <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                    <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/fe-elliptic/Rates of Convergence.ipynb">Run interactively (on mybinder.org)</a>
                  </li>
                  <li data-jstree='{"icon": "fa fa-terminal"}'>
                    <a href="repocur:demos/upload/fe-elliptic/Rates of Convergence.py">Download Python script</a>
                  </li>
                  <li data-jstree='{"icon": "fa fa-download"}'>
                    <a href="repocur:demos/upload/fe-elliptic/Rates of Convergence.ipynb">Download Jupyter notebook</a>
                  </li>
                </ul>
              </li>
            </ul>
            

          • Discontinuous Galerkin Methods for Hyperbolic Problems
            • Case Study: Maxwell's as a Conservation Law
            •   <li data-jstree='{"icon": "fa fa-file-o"}'>
                  Evaluating Schemes for Advection
                </li>
                <li data-jstree='{"icon": "fa fa-file-o"}'>
                  Developing DG
                </li>
                <li data-jstree='{"icon": "fa fa-file-o"}'>
                  Fluxes and Stability
                </li>
                <li data-jstree='{"icon": "fa fa-file-o"}'>
                  Implementation Concerns
                </li>
                <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                  <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/dg-hyperbolic/Finding Numerical Fluxes for DG.ipynb">Demo: Finding Numerical Fluxes for DG</a>
                  <ul>
                    <li data-jstree='{"icon": "fa fa-newspaper-o"}'>
                      <a href="repocur:demos/upload/dg-hyperbolic/Finding Numerical Fluxes for DG.html">View on the web</a>
                    </li>
                    <li data-jstree='{"icon": "fa fa-keyboard-o"}'>
                      <a href="https://mybinder.org/v2/gh/inducer/numpde-notes/uiuc-cs555-s20?filepath=demos/dg-hyperbolic/Finding Numerical Fluxes for DG.ipynb">Run interactively (on mybinder.org)</a>
                    </li>
                    <li data-jstree='{"icon": "fa fa-terminal"}'>
                      <a href="repocur:demos/upload/dg-hyperbolic/Finding Numerical Fluxes for DG.py">Download Python script</a>
                    </li>
                    <li data-jstree='{"icon": "fa fa-download"}'>
                      <a href="repocur:demos/upload/dg-hyperbolic/Finding Numerical Fluxes for DG.ipynb">Download Jupyter notebook</a>
                    </li>
                  </ul>
                </li>
              </ul>
              

**CAUTION!** These scribbled PDFs are an *unedited* reflection of what we wrote during class. They need to be viewed in the context of the class discussion that led to them. See the lecture videos for that. If you would like actual, self-contained class notes, look in the outline above. These scribbles are provided here to provide a record of our class discussion, to be used in perhaps the following ways: * as a way to cross-check your own notes * to look up a formula that you know was shown in a certain class * to remind yourself of what exactly was covered on a given day By continuing to read them, you acknowledge that these files are provided as supplementary material on an as-is basis.

Computing

We will be using Python with the libraries numpy, scipy and matplotlib for assignments. No other languages are permitted. Python has a very gentle learning curve, so you should feel at home even if you've never done any work in Python.

Virtual Machine Image

While you are free to install Python and Numpy on your own computer to do homework, the only supported way to do so is using the supplied virtual machine image.

Download Virtual Machine »

Books and Source Material

Draft Textbook

Once you sign in and complete your enrollment in RELATE, you will gain access to a draft textbook that was made available by Luke Olson.

Supplementary Text Books

Finite Difference Schemes and Partial Differential Equations

Strikwerda, John C. Finite Difference Schemes and Partial Differential Equations. (available as an e-book via the UIUC library) Society for Industrial and Applied Mathematics, 2004. Second edition. DOI.

Numerical Methods for Conservation Laws

LeVeque, Randall J. Numerical Methods for Conservation Laws. (available as an e-book via the UIUC library) 2nd ed. Birkhäuser Basel, 1992. DOI.

Finite Elements: Theory, Fast Solvers, and Applications in Solid Mechanics

Braess, Dietrich. Finite Elements: Theory, Fast Solvers, and Applications in Solid Mechanics. (available as an e-book via the UIUC library) Cambridge University Press, 2007. DOI.

Previous editions of this class

Computing Resources

Firedrake

Python

Numpy

Grading Policies

View grading policies »